#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/3/9
# @Author: Sunny
# ========================
"""
进程池：创建一个进程池，可以指定池里面放多少个进程，然后进程会自动去获取任务，如果任务数量多于进程池
        数量，则任务会等待，等待进程执行完其它任务，进程再自动获取任务执行
"""
import time
import os
from multiprocessing import Pool


def work(name):
    for i in range(3):
        time.sleep(1)
        print(f'{name}:---{os.getpid()}-----work{i}----------')


def main():
    # 创建一个拥有5个进程的进程池
    po = Pool(5)
    # 往进程池中添加20个任务
    for i in range(20):
        po.apply_async(work, (f'musen{i}',))  # 后面的参数，以元组的形式传参

    # close:关闭进程池(进程池停止接收任务)
    po.close()
    # 主进程等待进程池中的任务结束再往下执行
    po.join()


if __name__ == '__main__':
    main()
